package ventanas;

import java.awt.Desktop;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import utilidades.InformacionActualizacion;
import utilidades.MP3;
import utilidades.actualizador;
import clasesBasicas.Global;

import java.awt.Rectangle;
import java.awt.Dimension;

public class PanelOeste extends JPanel {
	
	
	/**
	 * Create the panel.
	 */
	public PanelOeste() {

	
		GridBagLayout gbl_PanelOeste = new GridBagLayout();
		gbl_PanelOeste.columnWidths = new int[]{0, 0};
		gbl_PanelOeste.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
		gbl_PanelOeste.columnWeights = new double[]{0.0, Double.MIN_VALUE};
		gbl_PanelOeste.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
		setLayout(gbl_PanelOeste);
		
		JButton btnMenPrincipal = new JButton("Menú Principal");
		btnMenPrincipal.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(Global.pFav != null){
					Global.pFav.setVisible(false);
					Global.pFav.removeAll();
				}
					
				if(Global.pRan != null){
					Global.pRan.setVisible(false);
					Global.pRan.removeAll();
					Global.pRan.apagarCancion();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				if(Global.pAdministrar != null){
					Global.pAdministrar.setVisible(false);
					Global.pAdministrar.removeAll();
				}
				if(Global.pMovimientos != null){
					Global.pMovimientos.setVisible(false);
					Global.pMovimientos.removeAll();
				}
				
				Global.pEmp.setVisible(false);
				Global.pNot.setVisible(false);
				Global.pLista.setVisible(true);
				
			}
			
		});
		GridBagConstraints gbc_btnMenPrincipal = new GridBagConstraints();
		gbc_btnMenPrincipal.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnMenPrincipal.insets = new Insets(0, 0, 5, 0);
		gbc_btnMenPrincipal.gridx = 0;
		gbc_btnMenPrincipal.gridy = 2;
		add(btnMenPrincipal, gbc_btnMenPrincipal);
		
		Global.btnNoticias = new JButton("Noticias");
		Global.btnNoticias.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if(Global.pFav != null){
					Global.pFav.setVisible(false);
					Global.pFav.removeAll();;
				}
					
				if(Global.pRan != null){
					Global.pRan.setVisible(false);
					Global.pRan.removeAll();	
					Global.pRan.apagarCancion();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				if(Global.pAdministrar != null){
					Global.pAdministrar.setVisible(false);
					Global.pAdministrar.removeAll();
				}
				if(Global.pMovimientos != null){
					Global.pMovimientos.setVisible(false);
					Global.pMovimientos.removeAll();
				}
				
				Global.pEmp.setVisible(false);
				Global.pNot.setVisible(true);
				Global.pNot.updateUI();
			}
		});
		GridBagConstraints gbc_btnNoticias = new GridBagConstraints();
		gbc_btnNoticias.insets = new Insets(0, 0, 5, 0);
		gbc_btnNoticias.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnNoticias.gridx = 0;
		gbc_btnNoticias.gridy = 4;
		add(Global.btnNoticias, gbc_btnNoticias);
		
		Global.btnEmpresa = new JButton("Empresa");
		Global.btnEmpresa.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
			
				if(Global.pFav != null){
					Global.pFav.setVisible(false);
					Global.pFav.removeAll();
				}
					
				if(Global.pRan != null){
					Global.pRan.setVisible(false);
					Global.pRan.removeAll();
					Global.pRan.apagarCancion();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				if(Global.pAdministrar != null){
					Global.pAdministrar.setVisible(false);
					Global.pAdministrar.removeAll();
				}
				if(Global.pMovimientos != null){
					Global.pMovimientos.setVisible(false);
					Global.pMovimientos.removeAll();
				}
				
				Global.pEmp.setVisible(true);
				Global.pNot.setVisible(false);
				
				Global.pEmp.updateUI();
				
			}
		});
		GridBagConstraints gbc_btnEmpresa = new GridBagConstraints();
		gbc_btnEmpresa.insets = new Insets(0, 0, 5, 0);
		gbc_btnEmpresa.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnEmpresa.gridx = 0;
		gbc_btnEmpresa.gridy = 6;
		add(Global.btnEmpresa, gbc_btnEmpresa);
		
		Global.btnRanking = new JButton("Ranking");
		Global.btnRanking.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				Global.pRan= new PanelRanking();
				ventanas.ElFrame.anadirPRan();
				Global.pRan.sonarCancion();
				if(Global.pFav != null){
					Global.pFav.setVisible(false);
					Global.pFav.removeAll();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				if(Global.pAdministrar != null){
					Global.pAdministrar.setVisible(false);
					Global.pAdministrar.removeAll();
				}
				if(Global.pMovimientos != null){
					Global.pMovimientos.setVisible(false);
					Global.pMovimientos.removeAll();
				}
				
				Global.pRan.setVisible(true);
				Global.pEmp.setVisible(false);
				Global.pNot.setVisible(false);	
				Global.pLista.setVisible(false);
				Global.pRan.updateUI();
				
			}
		});
		GridBagConstraints gbc_btnRanking = new GridBagConstraints();
		gbc_btnRanking.insets = new Insets(0, 0, 5, 0);
		gbc_btnRanking.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnRanking.gridx = 0;
		gbc_btnRanking.gridy = 8;
		add(Global.btnRanking, gbc_btnRanking);
		
		Global.btnAdministrar = new JButton("Administrar");
		Global.btnAdministrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Global.pAdministrar = new PanelAdministrar();
				ventanas.ElFrame.anadirPAdmin();
				Global.pAdministrar.setVisible(true);
				if(Global.pFav != null){
					Global.pFav.setVisible(false);
					Global.pFav.removeAll();
				}
					
				if(Global.pRan != null){
					Global.pRan.setVisible(false);
					Global.pRan.removeAll();	
					Global.pRan.apagarCancion();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				
				if(Global.pMovimientos != null){
					Global.pMovimientos.setVisible(false);
					Global.pMovimientos.removeAll();
				}
				Global.pEmp.setVisible(false);
				Global.pNot.setVisible(false);	
				Global.pLista.setVisible(false);
				
				Global.pAdministrar.updateUI();
				
			}
		});
		GridBagConstraints gbc_btnMiCuenta = new GridBagConstraints();
		gbc_btnMiCuenta.insets = new Insets(0, 0, 5, 0);
		gbc_btnMiCuenta.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnMiCuenta.gridx = 0;
		gbc_btnMiCuenta.gridy = 10;
		add(Global.btnAdministrar, gbc_btnMiCuenta);
		
		Global.btnMisMovimientos = new JButton("Mis movimientos");
		Global.btnMisMovimientos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Global.pMovimientos = new PanelMovimientos();
				ventanas.ElFrame.anadirPMov();
				Global.pMovimientos.setVisible(true);
				if(Global.pFav != null){
					Global.pFav.setVisible(false);
					Global.pFav.removeAll();
				}
					
				if(Global.pRan != null){
					Global.pRan.setVisible(false);
					Global.pRan.removeAll();
					Global.pRan.apagarCancion();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				if(Global.pAdministrar != null){
					Global.pAdministrar.setVisible(false);
					Global.pAdministrar.removeAll();
				}
				
				
				Global.pEmp.setVisible(false);
				Global.pNot.setVisible(false);	
				Global.pLista.setVisible(false);
				
				Global.pMovimientos.updateUI();
				
			}
		});
		GridBagConstraints gbc_btnMisMovimientos = new GridBagConstraints();
		gbc_btnMisMovimientos.insets = new Insets(0, 0, 5, 0);
		gbc_btnMisMovimientos.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnMisMovimientos.gridx = 0;
		gbc_btnMisMovimientos.gridy = 12;
		add(Global.btnMisMovimientos, gbc_btnMisMovimientos);
		
		Global.btnAyuda = new JButton("Ayuda");
		Global.btnAyuda.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//PDF DE MANUAL
				Desktop d = Desktop.getDesktop();
		        //Verifica que lo soporte el sistema
		        if(d.isDesktopSupported()){
		           try {
					d.open(new File("Manuel de Usuario.pdf"));
					Global.pRan.apagarCancion();
				} catch (IOException e1) {
					JOptionPane.showMessageDialog(null, "El documento de ayuda no se encuentra. Puede que haya sido eliminado.","Error en lectura",JOptionPane.ERROR_MESSAGE);
				}
		           
		        }
		        else{
		            //de lo contrario muestra un error
		        	JOptionPane.showMessageDialog(null, "No se puede abrir el archivo de ayuda, el sistema no lo soporta","Error del sistema",JOptionPane.ERROR_MESSAGE); 
				
		        }
			}
		});
		GridBagConstraints gbc_btnConfiguracin = new GridBagConstraints();
		gbc_btnConfiguracin.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnConfiguracin.insets = new Insets(0, 0, 5, 0);
		gbc_btnConfiguracin.gridx = 0;
		gbc_btnConfiguracin.gridy = 14;
		add(Global.btnAyuda, gbc_btnConfiguracin);
		
		Global.btnAdministrar.setEnabled(false);
		Global.btnRanking.setEnabled(false);
		Global.btnAyuda.setEnabled(true);
		Global.btnMisMovimientos.setEnabled(false);

		
		Global.btnFavoritos = new JButton("Favoritos");
		GridBagConstraints gbc_btnFavoritos = new GridBagConstraints();
		Global.btnFavoritos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				Global.pFav= new PanelFavoritos();
				ventanas.ElFrame.anadirPFav();
				Global.pFav.setVisible(true);	
				
									
				if(Global.pRan != null){
					Global.pRan.setVisible(false);
					Global.pRan.removeAll();
					Global.pRan.apagarCancion();
				}
				
				if(Global.pPref!=null)
				{
					Global.pPref.setVisible(false);
					Global.pPref.removeAll();
				}
				if(Global.pAdministrar != null){
					Global.pAdministrar.setVisible(false);
					Global.pAdministrar.removeAll();
				}
				if(Global.pMovimientos != null){
					Global.pMovimientos.setVisible(false);
					Global.pMovimientos.removeAll();
				}
				Global.pEmp.setVisible(false);
				Global.pNot.setVisible(false);	
				Global.pLista.setVisible(false);
				Global.pFav.updateUI();
				
			}
		});
		gbc_btnFavoritos.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnFavoritos.insets = new Insets(0, 0, 5, 0);
		gbc_btnFavoritos.gridx = 0;
		gbc_btnFavoritos.gridy = 16;
		add(Global.btnFavoritos, gbc_btnFavoritos);
		
		Global.btnFavoritos.setEnabled(false);
		
		
		Global.btnCrditos = new JButton("Créditos");
		GridBagConstraints gbc_btnCrditos = new GridBagConstraints();
		//escuchador de Preferencias
		Global.btnCrditos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				VentanaCreditos vCreditos= new VentanaCreditos();
				vCreditos.setVisible(true);
				vCreditos.setAlwaysOnTop(true);
				Global.pRan.apagarCancion();
				
			}
		});
		gbc_btnCrditos.insets = new Insets(0, 0, 5, 0);
		gbc_btnCrditos.fill = GridBagConstraints.HORIZONTAL;
		gbc_btnCrditos.gridx = 0;
		gbc_btnCrditos.gridy = 18;
		add(Global.btnCrditos, gbc_btnCrditos);		
		
		JButton button = new JButton("");
		button.addActionListener(new  ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
					//InformacionActualizacion actualizar= new InformacionActualizacion(actualizador.getWhatsNew());
					Thread actualizar= new Thread(new Runnable() {
						
						@Override
						public void run() {
							int versionNueva = 0;
							try {
								versionNueva = Integer.parseInt(actualizador.getLatestVersion());
								System.out.println(versionNueva);
							} catch (Exception e1) {
								// TODO Auto-generated catch block
								e1.printStackTrace();
							}
		    	        	int versionActual=InformacionActualizacion.versionActual;
							System.out.println("Mi versión: "+InformacionActualizacion.versionActual+" Versión actual: "+versionNueva);
		    	            if (versionNueva > versionActual) {  
		    	                try {
									new InformacionActualizacion(actualizador.getWhatsNew());
								} catch (Exception e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}	    	
		    	            }
		    	            else
		    	            {
		    	            	JOptionPane.showMessageDialog(null, "Su programa esta actualizado a la versión "+versionActual+".0. No necesita actualizarlo.", "Programa actualizado", JOptionPane.INFORMATION_MESSAGE);
		    	            }
							
						}
					});
					actualizar.start();
					
				
				
			}
		} );
		button.setIcon(new ImageIcon("imagenesBasicas/actualizar.png"));
		button.setPreferredSize(new Dimension(50, 50));
		button.setMinimumSize(new Dimension(50, 50));
		button.setMaximumSize(new Dimension(50, 50));
		button.setBounds(new Rectangle(0, 0, 50, 50));
		GridBagConstraints gbc_button = new GridBagConstraints();
		gbc_button.insets = new Insets(0, 0, 5, 0);
		gbc_button.gridx = 0;
		gbc_button.gridy = 26;
		add(button, gbc_button);
		
	}	

	
}
